// DateNumber.cpp: implementation of the CDateNumber class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "DateNumber.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CDateNumber::CDateNumber()
{

}

CDateNumber::~CDateNumber()
{

}

BOOL CDateNumber::Create(CString file,CString mfile,UINT id,UINT mid)
{
	BOOL bRet ;
	if( mfile.GetLength()>0)
		bRet = m_Dibm.AttachMapFile(mfile) ;
	else
		bRet = m_Dibm.LoadResource(mid);
	if( bRet == FALSE )
		return FALSE ;

	CNumber::Create(file,_T(""),id,0); 
	return TRUE ;
}

void CDateNumber::Draw(CDC* pDC , time_t time ,int x , int y ,int type)
{
	CTime tt(time) ;
	CSize ss = GetSize(1) ;
	int n ;
	if( type == 0 || type == 1 )
	{
		n =  tt.GetYear() ; 
		CNumber::Draw(pDC,n,x,y);
		x += ss.cx*4 ;

		DrawMinus(pDC,x,y);
		x += ss.cx ;
		n = tt.GetMonth() ;		
		if( n < 10 )
		{
			CNumber::Draw(pDC,0,x,y); 
			x += ss.cx ;
			CNumber::Draw(pDC,n,x,y); 
			x += ss.cx ;
		}
		else
		{
			CNumber::Draw(pDC,n,x,y); 
			x += 2*ss.cx ;
		}
		
		DrawMinus(pDC,x,y);
		x += ss.cx ;
		n = tt.GetDay() ;
		if( n < 10 )
		{
			CNumber::Draw(pDC,0,x,y); 
			x += ss.cx ;
			CNumber::Draw(pDC,n,x,y); 
			x += ss.cx ;
		}
		else
		{
			CNumber::Draw(pDC,n,x,y); 
			x += 2*ss.cx ;
		}
		x += ss.cx ;
	}
	CSize msize = m_Dibm.GetDimensions() ;
	if( type == 0 || type == 2 )
	{
		n = tt.GetHour() ;
		if( n < 10 )
		{
			CNumber::Draw(pDC,0,x,y); 
			x += ss.cx ;
			CNumber::Draw(pDC,n,x,y); 
			x += ss.cx ;
		}
		else
		{
			CNumber::Draw(pDC,n,x,y); 
			x += 2*ss.cx ;
		}
		DrawM(pDC,x,y);
		x += msize.cx ;
		
		n = tt.GetMinute()  ;
		if( n < 10 )
		{
			CNumber::Draw(pDC,0,x,y); 
			x += ss.cx ;
			CNumber::Draw(pDC,n,x,y); 
			x += ss.cx ;
		}
		else
		{
			CNumber::Draw(pDC,n,x,y); 
			x += 2*ss.cx ;
		}
		DrawM(pDC,x,y);
		x += msize.cx ;

		n = tt.GetSecond()   ;
		if( n < 10 )
		{
			CNumber::Draw(pDC,0,x,y); 
			x += ss.cx ;			
		}
		CNumber::Draw(pDC,n,x,y); 		
	}
}

CSize CDateNumber::DrawM(CDC* pDC ,int x, int y)
{
	CPoint pt(x,y);
	m_Dibm.TransparentDraw(pDC,pt,NTP_COLOR);
	CSize rsize = m_Dibm.GetDimensions() ;
	if( m_TextColor != NTX_COLOR)
	{		
		for(int i = 0 ; i < rsize.cx ; i++ )
			for(int j = 0 ; j < rsize.cy ; j++ )
				if( pDC->GetPixel(x+i,y+j) == NTX_COLOR)
					pDC->SetPixel(x+i,y+j,m_TextColor) ; 			
	}
	return rsize ;
}